<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>

</html>
<script>
    //1.Symbol--表示独一无二的值，它是js中的第七种数据类型，属于基本类型.
    //基本类型：number/string/boolean/null/undefined/Symbol
    //引用类型：object

    //2.意图：对象的属性自定义的，相同会覆盖。Symbol定义对象的属性。
    //Symbol():首字母大写。
    //Symbol 函数前不能使用new,否则会报错，原因在于symbol是一个原始类型的值，不是对象。
    let s1 = Symbol('lisi');
    let s2 = Symbol('wangwu');
    // console.log(s1 == s2);

    let obj = {
        name: 'zhangsan'
    }

    obj[s1] = 'lisi';
    obj[s2] = 'wangwu';
    obj[Symbol('lisi')] = 'lisi11111111';

    console.log(obj);
    console.log(obj[s1]);
    console.log(obj[Symbol('lisi')]); //undefined  不会相等。
    console.log(Symbol('lisi') == Symbol('lisi')); //false  描述的内容相同仅仅表示的是描述，不代表其他的意义

    // 弊端：带有Symbol的属性不能被for...in遍历出来，其他的可以
    // Object.getOwnPropertySymbols(obj)方法获取一个对象所有的symbol属性。
    // console.log(Object.getOwnPropertySymbols(obj));
</script>